bitkeeper revision 1.1159.1.417 (41966eb4oNbZp-QqXdzTAzmhv6s-QQ)
authorcl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk>
Sat, 13 Nov 2004 20:29:40 +0000 (20:29 +0000)
committercl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk>
Sat, 13 Nov 2004 20:29:40 +0000 (20:29 +0000)
sync w/ head

1  2 
.rootkeys
linux-2.6.9-xen-sparse/drivers/xen/netback/netback.c
xen/arch/x86/traps.c
xen/arch/x86/x86_32/entry.S
xen/arch/x86/x86_32/mm.c
xen/common/keyhandler.c
xen/common/schedule.c

diff --cc .rootkeys
Simple merge
index d6eae6d5eaf58257503a0006711983043255dde2,815740773bfe0a57fe90a4614885df2b2379ab58..cb057e9b6edc38a3b7f76c3aaf020ce6e62cde38
@@@ -625,36 -612,10 +614,10 @@@ asmlinkage void math_state_restore(stru
  asmlinkage void do_debug(struct xen_regs *regs, long error_code)
  {
      unsigned int condition;
 -    struct domain *tsk = current;
 +    struct exec_domain *tsk = current;
      struct guest_trap_bounce *gtb = guest_trap_bounce+smp_processor_id();
  
- #ifdef XEN_DEBUGGER
-     if ( pdb_initialized )
-         return do_pdb_debug(regs, error_code);
- #endif
+     DEBUGGER_trap_entry(TRAP_debug, regs, error_code);
  
      __asm__ __volatile__("movl %%db6,%0" : "=r" (condition));
  
Simple merge
Simple merge
Simple merge
index 805d5c633a5c46639198f9bb3c5ee6e5c7ee0a92,4aceef7d2ac02402d6b76af4ed12e4be0d56c396..939f12edd246e8c4b26fca9c0c94183c1fa1f03f
@@@ -87,14 -85,7 +85,8 @@@ static struct scheduler ops
  /* Per-CPU periodic timer sends an event to the currently-executing domain. */
  static struct ac_timer t_timer[NR_CPUS]; 
  
- /*
-  * Per-CPU timer which ensures that even guests with very long quantums get
-  * their time-of-day state updated often enough to avoid wrapping.
-  */
- static struct ac_timer fallback_timer[NR_CPUS];
  extern xmem_cache_t *domain_struct_cachep;
 +extern xmem_cache_t *exec_domain_struct_cachep;
  
  void free_domain_struct(struct domain *d)
  {
@@@ -500,45 -433,29 +491,31 @@@ static void s_timer_fn(unsigned long un
  /* Periodic tick timer: send timer event to current domain*/
  static void t_timer_fn(unsigned long unused)
  {
-     struct exec_domain *p = current;
 -    struct domain *d = current;
++    struct exec_domain *ed = current;
++    struct domain *d = ed->domain;
  
      TRACE_0D(TRC_SCHED_T_TIMER_FN);
  
-     if ( !is_idle_task(p->domain) ) {
-         update_dom_time(p->domain);
-         send_guest_virq(p, VIRQ_TIMER);
+     if ( !is_idle_task(d) )
+     {
 -        update_dom_time(d->shared_info);
 -        send_guest_virq(d, VIRQ_TIMER);
++        update_dom_time(d);
++        send_guest_virq(ed, VIRQ_TIMER);
      }
  
-     t_timer[p->processor].expires = NOW() + MILLISECS(10);
-     add_ac_timer(&t_timer[p->processor]);
+     t_timer[d->processor].expires = NOW() + MILLISECS(10);
+     add_ac_timer(&t_timer[d->processor]);
  }
  
  /* Domain timer function, sends a virtual timer interrupt to domain */
  static void dom_timer_fn(unsigned long data)
  {
 -    struct domain *d = (struct domain *)data;
 +    struct exec_domain *ed = (struct exec_domain *)data;
-     struct domain *d = ed->domain;
++
      TRACE_0D(TRC_SCHED_DOM_TIMER_FN);
-     update_dom_time(d);
 -    update_dom_time(d->shared_info);
 -    send_guest_virq(d, VIRQ_TIMER);
++    update_dom_time(ed->domain);
 +    send_guest_virq(ed, VIRQ_TIMER);
  }
  
- /* Fallback timer to ensure guests get time updated 'often enough'. */
- static void fallback_timer_fn(unsigned long unused)
- {
-     struct exec_domain *ed = current;
-     struct domain *p = ed->domain;
-     TRACE_0D(TRC_SCHED_FALLBACK_TIMER_FN);
-     if ( !is_idle_task(p) )
-         update_dom_time(p);
-     fallback_timer[ed->processor].expires = NOW() + MILLISECS(500);
-     add_ac_timer(&fallback_timer[ed->processor]);
- }
  /* Initialise the data structures. */
  void __init scheduler_init(void)
  {
          t_timer[i].cpu      = i;
          t_timer[i].data     = 3;
          t_timer[i].function = &t_timer_fn;
-         init_ac_timer(&fallback_timer[i]);
-         fallback_timer[i].cpu      = i;
-         fallback_timer[i].data     = 4;
-         fallback_timer[i].function = &fallback_timer_fn;
      }
  
 -    schedule_data[0].idle = &idle0_task;
 +    schedule_data[0].idle = &idle0_exec_domain;
  
      extern char opt_sched[];